iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Modern Web

想轉職的鯊魚從零基礎開始學習JavaScript系列 第 13

想轉職的鯊魚從零基礎開始學習JavaScript Day-13 The String Type字串(一)

  • 分享至 

  • xImage
  •  

前言

前面有說過字串的基本樣式是什麼,這邊來更進一步去理解字串是什麼。

字串-顧名思義即是文字的集合體
字串的編碼方式跟一般編碼方式是有些出入,只要被列為是字串裡面的每一個文字都代表一個16-bit unsigned integer values(16位元的無符號數),之後才會轉成Unicode給計算機讀取,也就是字串會經過兩次的編碼一次UTF-16一次Unicode。
所以針對字串的所有操作都不是針對字面上的操作,而是在16-bit上面運作。
一個字串的最大長度是2**53-1,

String(value) 字串化

顧名思義即是將value的型別type轉換成一個字串,如果value沒有值那會得到一個空字串。

ToObject(物件化)

雖然字串的基礎概念十分簡短,但是字串的運用很多都是在物件化之後。
這是一個不需要特別操作的行為,當字串在執行物件化的特性時就會自動物件化
也就是Object("一個字串Shark"),

物件化

ES5之後,字串可視為一個唯讀的陣列,可用[](square brackets)去呼叫字串個別的文字,或是取得字串的長度。

下面的[[Prototype]]:String,則表示他繼承從全域物件中繼承了"String" property(物件的特性),可以使用裡面的key跟function,也就是我們常說的Properties跟method。

Properties(屬性)

字串的Properties只有一個length,可以回傳字串的長度,無法去更改他的值。

字串length

從上圖可以看的出來,即使賦予一個字串的length一個新值,再次呼叫的時候,
length的值也不會改變。

method(方法)

String的method(方法)雖然都是String.prototype開頭但是String.prototype是直接用對象的字串帶入,所以值計執行上,只會是字串.method(),method依ECMA分類有34種,鯊魚會盡量依實用度為大家做介紹。

  • String.prototype.at ( index )
    依index(索引值)呼叫出字串中所引位置的單一文字,最大的特色是可以反向呼叫,當index(索引值)是負數時,可以從後面依序呼叫,對於想取最後一個文字來說相當的實用,不需要用[length-1]去找最後一個。
  • String.prototype.charAt ( pos )
    pos表示字串的position(位置)
    跟上面的.at很相似只是不支援負數。
    因為ES5自串有新增類似陣列的功能,可以用更簡化的方式呼叫字串中的特定位置字母,如果輸入的值是負數或是超出索引長度則會回傳一個空字串。
    然而這mothed還是有留下來的價值,因為它可以跟其他物件通用,所以很常配合this使用。
  • String.prototype.charCodeAt ( pos )
    跟.charAt類似只是回傳的不是字母而是UTF-16的代碼字元,如果輸入的值超過可以索引的回傳範圍則會回傳NaN。
  • String.prototype.codePointAt ( pos )
    跟.charAt類似只是回傳的不是字母而是Unicode的代碼字元,如果輸入的值超過可以索引的回傳範圍則會回傳Undefined。
  • String.prototype.concat ( ...args )
    連結兩個或兩個以上的字串,跟使用"+"感覺相似。
  • String.prototype.constructor()
    可以叫出String的原型,也就是String物件化繼承的原型。

(鯊語錄)

參考資料

EMCA262
MDN-String
wiki-無符號數


上一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-12 ECMAScript Language-概述(三)
下一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-14 The String Type字串(二)
系列文
想轉職的鯊魚從零基礎開始學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言